"""
客人的可乐
这个周末你家来了5位客人，每位客人都有自己偏好的可乐品牌，但他们的偏好都有部分重叠。具体来说：

第一位客人可能会喝可口可乐、零度可乐、健怡可乐或芬达中的任意一种；
第二位客人可能会喝百事可乐、零度可乐或健怡可乐中的任意一种；
第三位客人可能会喝可口可乐、百事可乐或芬达中的任意一种；
第四位客人可能会喝零度可乐、芬达或健怡可乐中的任意一种；
第五位客人可能会喝可口可乐、百事可乐或健怡可乐中的任意一种。
现在，你的冰箱里已经有的可乐数量如下：{"可口可乐": 10, "百事可乐": 2, "零度可乐": 0, "芬达": 6, "健怡可乐": 4}。
你需要确保每位客人在选择自己喜欢的饮料时都有至少一瓶可供选择。请编写一个函数 cola_supplement，计算并返回每种可乐需要补充的数量。

例如：
    # 初始库存
    initial_stock = {"可口可乐": 10, "百事可乐": 2, "零度可乐": 0, "芬达": 6, "健怡可乐": 4}

    # 每位客人可能喝的可乐品牌
    p1 = {"可口可乐", "零度可乐", "芬达", "健怡可乐"}
    p2 = {"百事可乐", "零度可乐", "健怡可乐"}
    p3 = {"可口可乐", "百事可乐", "芬达"}
    p4 = {"零度可乐", "芬达", "健怡可乐"}
    p5 = {"可口可乐", "百事可乐", "健怡可乐"}
    result = cola_supplement(initial_stock, p1, p2, p3, p4, p5)
    print("需要补充的可乐有：", result)  # 需要补充的可乐有： {'百事可乐': 1, '零度可乐': 3}
"""


def cola_supplement(stock, *args):

    # 计算每种可乐最少需要的数量
    min_required = {brand: 0 for brand in stock}
    for pref in args:
        for brand in pref:
            min_required[brand] += 1

    # 计算需要补充的数量
    supplement = {}
    for brand, count in stock.items():
        supplement[brand] = max(min_required[brand] - count, 0)  # 如果库存足够，则不需要补充

    return {k: v for k, v in supplement.items() if v > 0}  # 只返回需要补充的可乐


if __name__ == '__main__':
    # 初始库存
    initial_stock = {"可口可乐": 10, "百事可乐": 2, "零度可乐": 0, "芬达": 6, "健怡可乐": 4}

    # 每位客人可能喝的可乐品牌
    p1 = {"可口可乐", "零度可乐", "芬达", "健怡可乐"}
    p2 = {"百事可乐", "零度可乐", "健怡可乐"}
    p3 = {"可口可乐", "百事可乐", "芬达"}
    p4 = {"零度可乐", "芬达", "健怡可乐"}
    p5 = {"可口可乐", "百事可乐", "健怡可乐"}
    result = cola_supplement(initial_stock, p1, p2, p3, p4, p5)
    print("需要补充的可乐有：", result)
